package pro.cherish.knowledgedemoioc.controller;

import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.concurrent.ConcurrentHashMap;

/**
 * @author 创建人：cherish
 * @version 版本号：V1.0
 * <p>
 * ***************************修订记录************************************
 * 2019-09-28 cherish 创建该类功能。
 * **********************************************************************
 * </p>
 * @ClassName 类名：T1Controller
 * @Description 功能说明：进度条例子
 * <p>
 * TODO
 * </p>
 * **********************************************************************
 * @date 创建日期： 2019-09-28 cherish
 */
@RestController
@Slf4j
public class T1Controller {

    /**
     * 通过用户的ID存储,将进度存放在value中，每个用户操作的线程都只修改自己的进度，
     * 这样存在一个问题就是：一个用户通过是执行多个任务，会出现线程安全问题，
     * 最好的解决方案是将该状态存放在线程变量中，每个操作都存放各自的进度
     */
    public static ConcurrentHashMap<String, Object> map = new ConcurrentHashMap<String, Object>();

    @GetMapping("test1")
    public Object t1(String userId) throws InterruptedException {
        map.put(userId, Integer.parseInt(userId) * 10);
        Thread.sleep(10000);
        String name = Thread.currentThread().getName();
        log.info("线程名 {} userId{}", name, map.get("1"));
        return map.get("userId");
    }


}
